/* Copyright 2001,2002,2003 NAH6
 * All Rights Reserved
 *
 * Parts Copyright DoD, Parts Copyright Starium
 *
 */
/* -*-C-*-
*******************************************************************************
*
* File:         hal_types.h
* RCS:          $Id: hal_types.h,v 1.3 2003/11/22 16:34:28 itsme Exp $
* Description:  machine specific type defs
* Author:       Eric Blossom
* Created:      Mon Jan 11 11:34:01 1999
* Modified:     Sun Jul 11 19:06:13 1999 (eric) eb@starium.com
* Language:     C
* Package:      N/A
* Status:       Experimental (Do Not Distribute)
*
* (C) Copyright 1999, Starium LLC, all rights reserved.
*
*******************************************************************************
*/

#ifndef _TX39_HAL_TYPES_H_
#define _TX39_HAL_TYPES_H_


typedef unsigned char           uint8;
typedef unsigned short          uint16;
typedef unsigned long           uint32;

typedef signed char             int8;
typedef signed short            int16;
typedef signed long             int32;

#ifdef _MSC_VER
typedef unsigned __int64        uint64;
typedef signed __int64          int64;
#define inline __inline
#else
typedef unsigned long long      uint64;
typedef signed long long        int64;
#endif

/*
 * [Keep this structure and the corresponding defines in hal_asm_types.h in sync!]
 */

typedef struct {
  unsigned      r16;            /* s0    */
  unsigned      r17;            /* s1    */
  unsigned      r18;            /* s2    */
  unsigned      r19;            /* s3    */
  unsigned      r20;            /* s4    */
  unsigned      r21;            /* s5    */
  unsigned      r22;            /* s6    */
  unsigned      r23;            /* s7    */
  unsigned      r29;            /* sp    */
  unsigned      r30;            /* s8/fp */
  unsigned      r31;            /* ra    */
  unsigned      c0_sr;          /* status register */

} hal_control_context_t;

/*
 * CPU Interrupt / Exception frame.
 *
 * As a performance tweak when handling interrupts the fields marked "NI" are
 * not initialized (they are saved by the normal C calling conventions.)
 * For other exceptions, the entire contents are valid.
 *
 * [Keep this structure and the corresponding defines in hal_asm_types.h in sync!]
 */
typedef struct {
  unsigned      r1;
  unsigned      r2;
  unsigned      r3;
  unsigned      r4;
  unsigned      r5;
  unsigned      r6;
  unsigned      r7;
  unsigned      r8;
  unsigned      r9;
  unsigned      r10;
  unsigned      r11;
  unsigned      r12;
  unsigned      r13;
  unsigned      r14;
  unsigned      r15;
  unsigned      r16;            /* NI */
  unsigned      r17;            /* NI */
  unsigned      r18;            /* NI */
  unsigned      r19;            /* NI */
  unsigned      r20;            /* NI */
  unsigned      r21;            /* NI */
  unsigned      r22;            /* NI */
  unsigned      r23;            /* NI */
  unsigned      r24;
  unsigned      r25;
  unsigned      r26;            /* k0 placeholder */
  unsigned      r27;            /* k1 placeholder */
  unsigned      r28;
  unsigned      r29;            /* NI */
  unsigned      r30;            /* NI */
  unsigned      r31;
  unsigned      hi;
  unsigned      lo;
  unsigned      c0_epc;
  unsigned      c0_cause;
  unsigned      c0_sr;
  unsigned      c0_cache;
  unsigned      spare;          /* keep double word aligned */

} hal_interrupt_context_t;



#endif /* _TX39_HAL_TYPES_H_ */
